package com.ssyt.yt1.day8;

class Parent {

	public void sayHello() {
		System.out.println("Parent say hello ....");
	}
}

class Son1 extends Parent {

	@Override
	public void sayHello() {
		System.out.println("Son1 say hello ....");
	}

	public void print() {
		System.out.println("Son1 print()...");
	}
}

class Son2 extends Parent {

	@Override
	public void sayHello() {
		System.out.println("Son2 say hello ....");
	}

	public void print() {
		System.out.println("Son2 print()...");
	}
}

public class PolymorphismDemo1 {

	public static void main(String[] args) {
		// Parent parent = new Parent();

		// 1、一定要使用父类引用子类对象。如果用父接收，我们发现运行时类型是可以变化！
		// 2、使用父类去引用子类对象：
		// 1）如果子类有重写父类的方法，那么在使用父类对象调用被重写的方法时，使用的子类的实现逻辑！（参考父类的结构，实际上是调用子类的实现）
		// 2）如果子类没有重写父类的方法，父类对象调用方法时只会调用自己的实现逻辑！
		// Parent parent = new Son1();
		// parent.sayHello();
		// Parent parent = new Son2();

		// Parent parent = new Date();
	}
}
